1. Field of the Invention
This invention relates to data compression.
2. Description of Related Art
Currently, it is well known to record, transfer, and/or store data, such as, for example, documents, files, folders, pictures, sounds, music, videos, or the like, in the form of individual data files. Additionally, it is well known that large scale archiving and retrieval of data files can require high-capacity storage devices and media. Furthermore, it is also known that the transfer and storage of large quantities of data is increasing.
Generally, there are two methods for increasing the efficiency and reducing the cost associated with manipulating data. The first method involves increasing the rate at which data is transferred. By increasing the data transfer rate, a user can, for example, download a particular data file more quickly. However, increasing the data transfer rate does not reduce the amount of space needed to store the data once it has been transferred, or downloaded.
The second method for increasing the efficiency and reducing the cost of manipulating data involves decreasing the size of the data file itself, also known as compressing the data file. By compressing a particular data file, both the time required to transfer the data file and the amount of space needed to store the data file is reduced.
Data file compression is typically accomplished by dividing a data file into equal length data segments called data packets. Each data packet is then compressed, using a pre-determined data compression ratio. The compressed data packets are then stored and/or transferred as a new, smaller data file.
Various data compression techniques can be used to compress a particular data file. However, when data is compressed, the reproduction quality of the compressed data is reduced because data reproduction quality is inversely proportional to the data compression ratio. To illustrate, if a user saves a piece of music on his or her computer, using a high data compression ratio, the stored music file will take up less storage space on the user""s computer than the music would if it had been saved using a low data compression ratio. However, when the user replays the stored piece of music, the music will not sound as clear as it would have if the music had been saved using a low data compression ratio.
Therefore, if a particular data compression technique uses a high data compression ratio, the size of the data file containing the compressed data will be smaller, but the data reproduction quality will be reduced. In contrast, if a low data compression technique is used to compress the data, the data reproduction quality will be higher, but the resulting data file may be extremely large.
As a result, when data is recorded, stored, and/or transferred, a choice must be made between increased data file size and increased data reproduction quality. Typically, a moderate data compression ratio is selected. Using a moderate data compression ratio allows the overall size of the data file to be reduced enough to allow somewhat convenient data file manipulation while allowing the data reproduction quality to be high enough to provide the user with a tolerable level of data reproduction distortion. Once a data compression ratio is chosen, the data compression ratio is applied to all of the data packets in the data file.
When data is transferred and/or stored to, for example, a computer hard drive with a large amount of available memory capacity, data compression may not be critical because the computer""s hard drive can accommodate data files that are quite large. However, when data files are transmitted over low speed systems, or systems that operate in a low bandwidth, data compression becomes important. Similarly, when data is recorded, transferred, and/or stored to a device in which storage space is highly restricted or expensive, such as, for example, a personal digital assistant (PDA), a pager, or a cellular telephone, data compression is a primary factor. For at least these types of devices, a more efficient data compression system and method is particularly critical.
When fixed length data packets and fixed data compression ratios are used to manipulate data, as described above, the amount of data transmission and/or storage space is not effectively minimized for any given data file. This is primarily because the data compression ratio is constant for the entire data file. If, for example, a user wants to raise the data reproduction quality of a particular segment of a data file, the user must lower the data compression ratio for the entire data file.
Furthermore, fixed length packets waste space. Excess space in each data packet, such as, for example, data representing a period of silence or invalid data in a packet of audio data, is not removed. Instead, the excess space is filled with zeros or other null data so that the fixed data packet length is maintained.
Therefore, in order to increase the efficient use of available recording, transmission, and/or storage space, the systems and methods of this invention use variable compression ratio, variable length data packets to compress data. Instead of applying a fixed data compression ratio to all of the data packets, the systems and methods of this invention analyze each data packet individually and determine an appropriate data compression ratio for each data packet. By compressing each data packet in a data file at an appropriately determined compression ratio, the result is a smaller data file with improved data reproduction quality.
When the data is, for example, audio or video data, the amount of data in each data packet varies with time because audio and/or video data has varying periods of silence and varying densities of information per unit of time. Text data, by way of contrast, is typically consistent per unit of time.
If, for example, as shown in FIG. 3, a particular data packet contains a minimal amount of data, such as, for example, 5 bytes of data, the data compression ratio for that particular data packet is increased. A data packet might contain a minimal amount of data if the data packet is, for example, an audio data packet that represents mostly silence.
Although setting the data compression ratio at an increased level produces reduced data reproduction quality, an increased data compression ratio produces a reduced number of bits and therefore requires a smaller amount of recording, transmission, and/or storage space. Furthermore, since the data compression ratio is increased only for data packets containing a minimal amount of data, an increased data compression ratio is less significant when compared to overall data reproduction quality.
Conversely, if, as shown in FIG. 4, a particular data packet contains a significant level of data such as, for example, 20 bytes of data, a lower level of data compression is used. This lower level of data compression provides increased data reproduction quality for each data packet containing a significant amount of data. A data packet might contain a significant amount of data if the data packet is, for example, an audio data packet that represents a voice or music.
Although setting the data compression ratio at a lower level produces a larger data packet, a lower data compression ratio produces improved data reproduction quality. Furthermore, since the data compression ratio is lowered only for data packets containing a significant amount of data, the overall size of the resulting data file is not adversely effected.
Once the data within the data packet is compressed using an appropriate compression ratio, the data packet is converted from a fixed length data packet into a variable length data packet. The specific length of each data packet is determined by the number of valid data bytes in that particular data packet. Valid data bytes are data bytes that actually represent sound, such as, for example, a voice, or music. In contrast, invalid data bytes are data bytes that can represent, for example, periods of silence. When the invalid data bytes are removed, the remaining, valid data bytes are compressed to produce a smaller data packet.
Since each data packet represents a short period of time, such as, for example, 20 milliseconds, the overall reproduction quality of the resulting data file is not reduced by the variable compression ratios of the data packets.
Because both the data compression ratio and the length of each data packet can vary from data packet to data packet, it is critical that these data packet characteristics be specified for each data packet. Additionally, particularly with audio and/or video data, a user must be able to search data files in a forward, a backward, or a mid-file mode. Therefore, the systems and methods of this invention provide a length code at both the beginning and end of each data packet. The end bytes of these opening and closing length codes are used to identify the number of valid data bytes in each data packet.
Because the number of valid data bytes in each data packet varies with, and is directly related to, the data compression ratio, identifying the number of valid data bytes in each data packet actually identifies the data compression ratio used to compress each data packet as well. Therefore, when the number of valid data bytes in a particular data packet is known, the data within that data packet can be decompressed and used. Thus, the length code is the only code that must appear in the opening and closing code portion of each data packet.
Although the need for length codes at each end of each data packet adds extra bytes to each data packet, the ability to use variable data compression ratios in combination with variable length data packets more than compensates for the space required for the length codes.
Although this method of using variable length, variable data compression ratio data packets has been described with reference to compression of existing data files, the data compression techniques of this invention can also be used to compress data that is received in the form of a continuous stream of real time data. Real time data can be, for example, the live audio and/or video transmission of a concert or sporting event. Typically, when data is manipulated in real time, the data is input through a buffer. The buffer stores at least a portion of the incoming data until the incoming data is translated into compressed data packets as described above.
Accordingly, when a flow of data is received, the valid data is extracted from the data flow and converted to variable length, variable data compression ratio data packets. In various exemplary embodiments, the conversion from a continuous data flow to variable length, variable data compression ratio data packets entails buffering at least a portion of the data flow and converting the data flow into fixed length data packets. These fixed length data packets are then converted to variable length, variable data compression ratio data packets, as described herein. In various other exemplary embodiments, the systems and methods of this invention can be designed to convert data into variable data compression ratio, variable length data packets, without a transition to or from fixed length data packets.
This invention separately provides systems and methods that improve overall data reproduction quality and convey an impression of enhanced audio quality.
This invention separately provides systems and methods that extend recording time without reducing overall data reproduction quality.
The systems and methods of this invention separately provide an improved level of data reproduction quality, as compared to systems utilizing fixed data compression ratios at the same data or compression rates.
This invention provides systems and methods that produce improved audio quality by increasing data reproduction quality relative to data density.
The systems and methods of this invention provide increased data compression ratios that only reduce data reproduction quality for low density data packets, and decreased data compression ratios that only increase the data reproduction quality for high density data packets.
This invention separately provides systems and methods that utilize different data compression ratios depending upon the amount of data that is being recorded, stored, and/or transmitted.
This invention separately provides systems and methods that convert data into variable data compression ratio, variable length data packets.
This invention separately provides systems and methods that allow the data reproduction quality to be raised or lowered within any given data packet.
This invention separately provides systems and methods that produce data packets with a minimized size.
This invention separately provides systems and methods that reduce the number of invalid data bytes in any given data packet.
This invention separately provides systems and methods that allow compressed data files to be built from real time data streams without the need for a powerful computer or personal digital assistant (PDA).
This invention separately provides systems and methods that increase the speed and efficiency of the user""s computer or PDA.
This invention separately provides systems and methods that decrease the amount of storage space that a given data file consumes on a user""s computer or PDA.
These and other features and advantages of this invention are described in or are apparent from the following detailed description of the exemplary embodiments.